<?php
/*
 * 快递100API
 */
namespace mycrypt;

use app\common\model\System;

class Mycrypt
{
    public function encrypt($key,$str){
        $size=mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
        $str=$this->pkcs5_pad($str, $size);
        $td=mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
        $iv=mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, $key, $iv);
        $data=mcrypt_generic($td,$str);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $data=base64_encode($data);
        $data=str_replace(['=', '+', '/'],['O0O0O', 'o000o', 'oo00o'],$data);
        return $data;
    }
    public function decrypt($key,$token){
        $token=str_replace(['O0O0O', 'o000o', 'oo00o'],['=', '+', '/'], $token);
        $decrypted=mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key,base64_decode($token),MCRYPT_MODE_ECB);
        $dec_s=strlen($decrypted);
        $padding=ord($decrypted[$dec_s-1]);
        $decrypted=substr($decrypted,0,-$padding);
        return $decrypted;
    }
    private function pkcs5_pad($text, $blocksize) {
        $pad=$blocksize-(strlen($text)%$blocksize);
        return $text.str_repeat(chr($pad),$pad);        
    }


}
